using System;
using ns27;

namespace Triton.Game.Mapping
{
	[Attribute38("KarazhanPortalSpell")]
	public class KarazhanPortalSpell : SuperSpell
	{
		public Spell m_portalSpell => method_3<Spell>("m_portalSpell");

		public Spell m_customSpawnSpell => method_3<Spell>("m_customSpawnSpell");

		public float m_minTimePortalIsOpen => method_2<float>("m_minTimePortalIsOpen");

		public bool m_waitForSpawnSpell => method_2<bool>("m_waitForSpawnSpell");

		public Spell m_portalSpellInstance => method_3<Spell>("m_portalSpellInstance");

		public Spell m_spawnSpellInstance => method_3<Spell>("m_spawnSpellInstance");

		public Card m_spawnedMinion => method_3<Card>("m_spawnedMinion");

		public bool m_playSuperSpellVisuals => method_2<bool>("m_playSuperSpellVisuals");

		public bool m_isPortalOpenForMinTime => method_2<bool>("m_isPortalOpenForMinTime");

		public KarazhanPortalSpell(IntPtr address, string className)
			: base(address, className)
		{
		}

		public KarazhanPortalSpell(IntPtr address)
			: this(address, "KarazhanPortalSpell")
		{
		}

		public new bool AddPowerTargets()
		{
			return method_11<bool>("AddPowerTargets", Array.Empty<object>());
		}

		public new void OnAction(SpellStateType prevStateType)
		{
			method_8("OnAction", prevStateType);
		}

		public void SuppressDeathSoundsOnKilledTargets()
		{
			method_8("SuppressDeathSoundsOnKilledTargets");
		}

		public new bool CanPurge()
		{
			return method_11<bool>("CanPurge", Array.Empty<object>());
		}

		public void OnSpawnSpellEvent(string eventName, object eventData, object userData)
		{
			method_8("OnSpawnSpellEvent", eventName, eventData, userData);
		}

		public new void OnSpellFinished()
		{
			method_8("OnSpellFinished");
		}

		public void TryPortalClose()
		{
			method_8("TryPortalClose");
		}

		public Card GetSpawnedMinion()
		{
			return method_14<Card>("GetSpawnedMinion", Array.Empty<object>());
		}
	}
}
